package com.delio.client.pagos.aportes;

import java.util.List;

import com.delio.client.idioma.DelioConstants;
import com.delio.client.util.MensajeData;
import com.extjs.gxt.ui.client.data.BaseListLoader;
import com.extjs.gxt.ui.client.data.BeanModel;
import com.extjs.gxt.ui.client.data.BeanModelReader;
import com.extjs.gxt.ui.client.data.ListLoadResult;
import com.extjs.gxt.ui.client.data.ListLoader;
import com.extjs.gxt.ui.client.data.LoadEvent;
import com.extjs.gxt.ui.client.data.RpcProxy;
import com.extjs.gxt.ui.client.event.LoadListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

public class Aportes {
	private static AporteServiceAsync ms = GWT.create(AporteService.class);
	private static DelioConstants k = GWT.create(DelioConstants.class);
	public static Integer aporte_id;

	public static ListStore<BeanModel> store;
	public static ListLoader<ListLoadResult<BeanModel>> loader;

	public static ListStore<BeanModel> store2;
	public static ListLoader<ListLoadResult<BeanModel>> loader2;

	public static Integer empleado_id;
	public static PanelAsignarAporte panelasignaraporte;
	
	public static Integer tipoaporte_id;
	
	public static Integer cont;

	public static void save(Aporte ap) {
		aporte_id = ap.getId();
		ap.setTipoaporte_id(tipoaporte_id);
		ms.save(ap, new AsyncCallback<MensajeData>() {

			@Override
			public void onSuccess(MensajeData result) {

				if (result.guardado) {

					if (aporte_id != null) {
						store.commitChanges();
					} else
						loader.load();

				} else {

					MessageBox.alert(k.sistemaDelio(), k.aporteNoGuardado(),
							null);
				}
			}

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);
				store.rejectChanges();
			}
		});
	}

	public static void delete(Integer id) {
		ms.delete(id, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);
			}

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {

					loader.load();
				} else {

					MessageBox.alert(k.sistemaDelio(), k.aporteNoEliminado(),
							null);
				}

			}
		});

	}

	public static void deleteAll(String ids) {

		ms.deleteAll(ids, new AsyncCallback<MensajeData>() {

			@Override
			public void onFailure(Throwable caught) {
				MessageBox.alert(k.sistemaDelio(), k.errorConexion(), null);

			}

			@Override
			public void onSuccess(MensajeData result) {
				if (result.guardado) {

					loader.load();
				} else {

					MessageBox.alert(k.sistemaDelio(), k.aporteNoEliminados(),
							null);
				}

			}

		});

	}

	public static void getAportes() {

		RpcProxy<List<Aporte>> proxy = new RpcProxy<List<Aporte>>() {

			@Override
			protected void load(Object loadConfig,
					AsyncCallback<List<Aporte>> callback) {
				ms.getAportes(tipoaporte_id,callback);
			}
		};

		loader = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
				new BeanModelReader());
		
		loader.addLoadListener(new  LoadListener(){
			
			public void loaderLoad(LoadEvent le) {


			}	
			
			
		});
		
		store = new ListStore<BeanModel>(loader);
	
		
	}

	public static void getDescuentoAportes() {

		RpcProxy<List<DescuentoAporte>> proxy = new RpcProxy<List<DescuentoAporte>>() {

			@Override
			protected void load(Object loadConfig,	AsyncCallback<List<DescuentoAporte>> callback) {
				ms.getDescuentoAportes(empleado_id, callback);
				
			}
		};

		loader2 = new BaseListLoader<ListLoadResult<BeanModel>>(proxy,
				new BeanModelReader());



		store2 = new ListStore<BeanModel>(loader2);
		
	

	}

}
